home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / etc / init.d / udev < prev    next >
Encoding:
Text File  |  2009-04-08  |  3.3 KB  |  141 lines

  1. #!/bin/sh -e
  2. ### BEGIN INIT INFO
  3. # Provides:          udev
  4. # Required-Start:    mountkernfs
  5. # Required-Stop:
  6. # Should-Start:
  7. # Default-Start:     S
  8. # Default-Stop:
  9. # Short-Description: Start the udev daemon.
  10. # Description:       Mounts the /dev virtual filesystem, starts the udev
  11. #                    daemon and populates /dev.
  12. ### END INIT INFO
  13.  
  14. # Check the package is still installed
  15. [ -x /sbin/udevd ] || exit 0
  16.  
  17. # Get LSB functions
  18. . /lib/lsb/init-functions
  19. . /etc/default/rcS
  20.  
  21.  
  22. case "$1" in
  23.     start)
  24.     # We need the uevent support introduced in 2.6.15, bail out if we
  25.     # don't have it and fall back to a static /dev
  26.     if [ ! -f /sys/class/mem/null/uevent ]; then
  27.         if mountpoint -q /dev; then
  28.         # uh-oh, initramfs made some kind of /dev, get rid of it
  29.         umount -l /dev
  30.         fi
  31.         exit 1
  32.     fi
  33.  
  34.     if ! mountpoint -q /dev; then
  35.         # initramfs didn't mount /dev, so we'll need to do that
  36.         mount -n -t tmpfs -o mode=0755 udev /dev
  37.     fi
  38.  
  39.     # Copy over default device tree
  40.     cp -a -f /lib/udev/devices/* /dev
  41.  
  42.     # It's all over netlink now
  43.     if [ -e /proc/sys/kernel/hotplug ]; then
  44.         echo "" > /proc/sys/kernel/hotplug
  45.     fi
  46.     
  47.     # Start udevd
  48.     log_begin_msg "Starting kernel event manager..."
  49.     if start-stop-daemon --start --quiet --exec /sbin/udevd -- --daemon; then
  50.         log_end_msg 0
  51.     else
  52.         log_end_msg $?
  53.     fi
  54.  
  55.     # This next bit can take a while
  56.     if type usplash_write >/dev/null 2>&1; then
  57.         usplash_write "TIMEOUT 360" ||:
  58.         trap "usplash_write 'TIMEOUT 15' ||:" 0
  59.     fi
  60.  
  61.     # Log things that trigger does
  62.     /sbin/udevadm monitor -e >/dev/.udev.log &
  63.     UDEV_MONITOR_PID=$!
  64.  
  65.     # Fix permissions and missing symlinks/programs for devices made in
  66.     # initramfs, and catch up on everything we missed
  67.     log_begin_msg "Loading hardware drivers..."
  68.     /sbin/udevadm trigger
  69.     if /sbin/udevadm settle; then
  70.         log_end_msg 0
  71.     else
  72.         log_end_msg $?
  73.     fi
  74.  
  75.     # Kill the udev monitor again
  76.     kill $UDEV_MONITOR_PID
  77.     ;;
  78.     stop)
  79.     log_begin_msg "Stopping kernel event manager..."
  80.     if start-stop-daemon --stop --quiet --oknodo --exec /sbin/udevd --retry 5; then
  81.         log_end_msg 0
  82.     else
  83.         log_end_msg $?
  84.     fi
  85.     umount -l /dev
  86.     ;;
  87.     restart)
  88.     if [ ! -f /sys/kernel/uevent_seqnum ]; then
  89.         echo "Kernel uevent sequence number not available, cowardly not restarting udev" 1>&2
  90.         exit 0
  91.     fi
  92.  
  93.     seqnum_before=$(cat /sys/kernel/uevent_seqnum)
  94.  
  95.      log_begin_msg "Stopping kernel event manager..."
  96.     if start-stop-daemon --stop --quiet --oknodo --exec /sbin/udevd --retry 5; then
  97.         log_end_msg 0
  98.     else
  99.         log_end_msg $?
  100.     fi
  101.  
  102.     log_begin_msg "Starting kernel event manager..."
  103.     if start-stop-daemon --start --quiet --exec /sbin/udevd -- --daemon; then
  104.         log_end_msg 0
  105.     else
  106.         log_end_msg $?
  107.     fi
  108.  
  109.     seqnum_after=$(cat /sys/kernel/uevent_seqnum)
  110.  
  111.     if [ $seqnum_before -ne $seqnum_after ]; then
  112.         echo "Kernel uevent sequence number changed, some events may have been missed :o(" 1>&2
  113.     fi
  114.     ;;
  115.     refresh-devices)
  116.     cp -au /lib/udev/devices/* /dev
  117.  
  118.     log_begin_msg "Loading additional hardware drivers..."
  119.     /sbin/udevadm trigger
  120.     if /sbin/udevadm settle; then
  121.         log_end_msg 0
  122.     else
  123.         log_end_msg $?
  124.     fi
  125.     ;;
  126.     reload|force-reload)
  127.     log_begin_msg "Reloading kernel event manager..."
  128.     if start-stop-daemon --stop --signal 1 --exec /sbin/udevd; then
  129.         log_end_msg 0
  130.     else
  131.         log_end_msg $?
  132.     fi
  133.     ;;
  134. *)
  135.     echo "Usage: /etc/init.d/udev {start|stop|restart|refresh-devices|reload|force-reload}"
  136.     exit 1
  137.     ;;
  138. esac
  139.  
  140. exit 0
  141.